package cc.flyflow.web.controller.base;

import cc.flyflow.biz.service.IBaseService;
import cc.flyflow.biz.vo.*;
import cc.flyflow.common.dto.IndexPageStatistics;
import cc.flyflow.common.dto.R;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 基础的控制器接口
 *
 * @author Jyl
 */
@RestController
@RequestMapping(value = "base")
public class BaseController
{

    @Resource
    private IBaseService baseService;

    /**
     * 修改前端版本号
     *
     * @param webVersionVO
     * @return
     */
    @PostMapping("setWebVersion")
    public R setWebVersion(@RequestBody WebVersionVO webVersionVO)
    {
        return baseService.setWebVersion(webVersionVO);
    }

    /**
     * 获取当前系统版本号
     *
     * @return
     */
    @GetMapping("getWebVersion")
    public R getWebVersion()
    {
        return baseService.getWebVersion();
    }

    /**
     * 首页数据
     *
     * @return
     */
    @GetMapping("index")
    public R<IndexPageStatistics> index()
    {
        return baseService.index();
    }

    /**
     * 获取所有地区数据
     *
     * @return
     */
    @GetMapping("areaList")
    public R areaList()
    {
        return baseService.areaList();
    }

    /**
     * 同步数据--主要是真的第三方接口，比如钉钉
     *
     * @return
     */
    @PostMapping("loadRemoteData")
    public R loadRemoteData()
    {
        return baseService.loadRemoteData();
    }

    /**
     * 格式化流程显示
     * TODO 发起流程列表
     *
     * @param nodeFormatParamVo
     * @return
     */
    @PostMapping("formatStartNodeShow")
    public R<NodeFormatResultVo> formatStartNodeShow(@RequestBody NodeFormatParamVo nodeFormatParamVo)
    {
        return baseService.formatStartNodeShow(nodeFormatParamVo);
    }

    /**
     * 查询头部显示数据
     *
     * @param nodeFormatParamVo
     * @return
     */
    @PostMapping("queryHeaderShow")
    public R<TaskHeaderShowResultVO> queryHeaderShow(@RequestBody QueryFormListParamVo nodeFormatParamVo)
    {
        return baseService.queryHeaderShow(nodeFormatParamVo);
    }

    /**
     * 获取任务操作列表
     *
     * @param taskId 任务id
     * @return
     */
    @GetMapping("queryTaskOperData")
    public R<TaskOperDataResultVO> queryTaskOperData(String taskId)
    {
        return baseService.queryTaskOperData(taskId);
    }
}
